#pragma once

#ifdef PLUGINICPROCSTEPS_EXPORTS
#define PLUGINICPROCSTEPS_API __declspec(dllexport)
#else
#define PLUGINICPROCSTEPS_API __declspec(dllimport)
#endif

#include "IPluginICProcSteps.h"
#include "DefSocketImageCurator.h"
#include "gLibDetails.h"

extern "C" void  *MXSTDMETHOD CreateClassInstance(const char *IId);


#pragma warning(disable:4275)
class PLUGINICPROCSTEPS_API PluginICProcSteps : IPluginICProcSteps
{
#pragma warning(default:4275)
public:
	PluginICProcSteps::PluginICProcSteps(void);
	virtual PluginICProcSteps::~PluginICProcSteps(void);
				//IMxPluginBase
	virtual long   MXSTDMETHOD DestroyPtr(void);
	virtual long   MXSTDMETHOD DuplicatePtr(void);
	virtual void * MXSTDMETHOD Dynamic_cast(const char *IId);
	virtual const char *MXSTDMETHOD GetInterfaceGUID(void)  { return IPluginICProcStepsIID::GUID(); }
	virtual const char *MXSTDMETHOD GetInterfaceName(void) { return IPluginICProcStepsIID::Name(); }
				//IMxPluginLibDetails
	virtual const char *MXSTDMETHOD GetLibName(void) { return ::gLibName();	}							//VS_VERSION_INFO::ProductName
	virtual const char *MXSTDMETHOD GetLibDescription(void) { return ::gLibDescription(); }				//VS_VERSION_INFO::FileDescription
	virtual const char *MXSTDMETHOD GetLibVersion(void) { return ::gLibVersion(); }						//VS_VERSION_INFO::ProductVersion
	virtual const char *MXSTDMETHOD GetLibOwnerName(void) { return ::gLibOwnerName();	}				//VS_VERSION_INFO::CompanyName
	virtual const char *MXSTDMETHOD GetLibCopyrightNotice(void) { return ::gLibCopyrightNotice(); }		//VS_VERSION_INFO::LegalCopyright
	virtual const char *MXSTDMETHOD GetLibID(void) { return ::gLibID(); }								//VS_VERSION_INFO::InternalName **** GUID **** - same as its folder name in PluginRootFolder
	virtual const char *MXSTDMETHOD GetLibSupportSite(void) { return "http://www.imagecurator.org";	}		
	virtual const char *MXSTDMETHOD GetLibLicenseName(void) { return "New BSD Licence"; }								
	virtual const char *MXSTDMETHOD GetLibLicenseURL(void)  { return "http://imagecurator.codeplex.com/license"; }	
	virtual const wchar_t *MXSTDMETHOD GetLibPathFilename(void) { return ::gLibPathFilename(); }		//filename returned by ::GetModuleFileName() of hModule in DllMain, DLL_PROCESS_ATTACH	
			
	virtual const char *MXSTDMETHOD GetSocketAppID(void) { return DefSocketImageCurator::SID(); }		//GUID provided by SocketImageProcXGUI, ImageCurator, etc - says this Plugin supports this application
				//IPluginICProcSteps	
	virtual const char *MXSTDMETHOD GetLibApiDetails() { return "hello from PluginICProcSteps"; }	

private:
	long _refCnt;
};


